// Package types define the structure of request parameters and return results in this package
package types

import (
	"time"

	"github.com/zhufuyi/sponge/pkg/mysql/query"
)

var _ time.Time

// CreateTkOrderAfterSaleRequest create params
// todo fill in the binding rules https://github.com/go-playground/validator
type CreateTkOrderAfterSaleRequest struct {
	AppID                string `json:"appId" binding:""`           // appid
	OrderSn              string `json:"orderSn" binding:""`         // 订单号
	RefundSn             string `json:"refundSn" binding:""`        // 退款单号
	OrderID              int64  `json:"orderId" binding:""`         // 订单id
	ProductID            int    `json:"productId" binding:""`       // 商品id
	ProductCode          string `json:"productCode" binding:""`     // 商品code
	ShopID               int    `json:"shopId" binding:""`          // 店铺ID
	CompanyID            int    `json:"companyId" binding:""`       // 公司ID
	AdminID              uint   `json:"adminId" binding:""`         // 管理员ID
	UserID               int    `json:"userId" binding:""`          // 用户id
	Appid                string `json:"appid" binding:""`           // 小程序ID
	AfterSaleStatus      int    `json:"afterSaleStatus" binding:""` // 售后状态（待处理1.待卖家退货2.待商家收货3.换货待商家发货4.待买家收获5.退款完成6.售后关闭7.退款中8.极速退款成功9.售后完成10.待买家处理11.退款失败12）
	AfterSaleType        int    `json:"afterSaleType" binding:""`   // 业务类型（1仅退款, 2.退货退款,3:换货，4：极速退款）
	Reason               string `json:"reason" binding:""`
	Number               int    `json:"number" binding:""`               // 退货数量
	Price                uint   `json:"price" binding:""`                // 退款金额
	RefundMoney          int    `json:"refundMoney" binding:""`          // 实际申请金额
	MsgID                int    `json:"msgId" binding:""`                // 原因选择
	Images               string `json:"images" binding:""`               // 凭证图片（
	RefuseReason         string `json:"refuseReason" binding:""`         // 拒绝原因
	RefuseFail           string `json:"refuseFail" binding:""`           // 微信退款失败原因
	ApplyAt              int    `json:"applyAt" binding:""`              // 申请时间
	ConfirmAt            int    `json:"confirmAt" binding:""`            // 确认时间
	AuditAccountID       int    `json:"auditAccountId" binding:""`       // 最后审核人ID
	AuditAt              uint   `json:"auditAt" binding:""`              // 审核时间
	CancelAt             int    `json:"cancelAt" binding:""`             // 取消时间
	SuccessAt            int    `json:"successAt" binding:""`            // 退款成功时间
	RefuseAt             int    `json:"refuseAt" binding:""`             // 拒绝时间
	AfterSale            int    `json:"afterSale" binding:""`            // 是否极速退款1.开启极速退款2.关闭极速退款'
	EditAdminID          int    `json:"editAdminId" binding:""`          // 同意拒绝的负责人
	LogisticsCompany     string `json:"logisticsCompany" binding:""`     // 物流公司
	LogisticsNumber      string `json:"logisticsNumber" binding:""`      // 物流单后
	RefundUserName       string `json:"refundUserName" binding:""`       // 申请人姓名
	RefundUserPhone      string `json:"refundUserPhone" binding:""`      // 申请人手机号
	UserSendTime         int    `json:"userSendTime" binding:""`         // 用户发货时间
	IsUpdateAddress      int    `json:"isUpdateAddress" binding:""`      // 是否修改物流，1：已修改。0：未修改
	TkMerchantComplaints int    `json:"tkMerchantComplaints" binding:""` // 微信支付投诉id
}

// UpdateTkOrderAfterSaleByIDRequest update params
type UpdateTkOrderAfterSaleByIDRequest struct {
	ID uint64 `json:"id" binding:""` // uint64 id

	AppID                string `json:"appId" binding:""`           // appid
	OrderSn              string `json:"orderSn" binding:""`         // 订单号
	RefundSn             string `json:"refundSn" binding:""`        // 退款单号
	OrderID              int64  `json:"orderId" binding:""`         // 订单id
	ProductID            int    `json:"productId" binding:""`       // 商品id
	ProductCode          string `json:"productCode" binding:""`     // 商品code
	ShopID               int    `json:"shopId" binding:""`          // 店铺ID
	CompanyID            int    `json:"companyId" binding:""`       // 公司ID
	AdminID              uint   `json:"adminId" binding:""`         // 管理员ID
	UserID               int    `json:"userId" binding:""`          // 用户id
	Appid                string `json:"appid" binding:""`           // 小程序ID
	AfterSaleStatus      int    `json:"afterSaleStatus" binding:""` // 售后状态（待处理1.待卖家退货2.待商家收货3.换货待商家发货4.待买家收获5.退款完成6.售后关闭7.退款中8.极速退款成功9.售后完成10.待买家处理11.退款失败12）
	AfterSaleType        int    `json:"afterSaleType" binding:""`   // 业务类型（1仅退款, 2.退货退款,3:换货，4：极速退款）
	Reason               string `json:"reason" binding:""`
	Number               int    `json:"number" binding:""`               // 退货数量
	Price                uint   `json:"price" binding:""`                // 退款金额
	RefundMoney          int    `json:"refundMoney" binding:""`          // 实际申请金额
	MsgID                int    `json:"msgId" binding:""`                // 原因选择
	Images               string `json:"images" binding:""`               // 凭证图片（
	RefuseReason         string `json:"refuseReason" binding:""`         // 拒绝原因
	RefuseFail           string `json:"refuseFail" binding:""`           // 微信退款失败原因
	ApplyAt              int    `json:"applyAt" binding:""`              // 申请时间
	ConfirmAt            int    `json:"confirmAt" binding:""`            // 确认时间
	AuditAccountID       int    `json:"auditAccountId" binding:""`       // 最后审核人ID
	AuditAt              uint   `json:"auditAt" binding:""`              // 审核时间
	CancelAt             int    `json:"cancelAt" binding:""`             // 取消时间
	SuccessAt            int    `json:"successAt" binding:""`            // 退款成功时间
	RefuseAt             int    `json:"refuseAt" binding:""`             // 拒绝时间
	AfterSale            int    `json:"afterSale" binding:""`            // 是否极速退款1.开启极速退款2.关闭极速退款'
	EditAdminID          int    `json:"editAdminId" binding:""`          // 同意拒绝的负责人
	LogisticsCompany     string `json:"logisticsCompany" binding:""`     // 物流公司
	LogisticsNumber      string `json:"logisticsNumber" binding:""`      // 物流单后
	RefundUserName       string `json:"refundUserName" binding:""`       // 申请人姓名
	RefundUserPhone      string `json:"refundUserPhone" binding:""`      // 申请人手机号
	UserSendTime         int    `json:"userSendTime" binding:""`         // 用户发货时间
	IsUpdateAddress      int    `json:"isUpdateAddress" binding:""`      // 是否修改物流，1：已修改。0：未修改
	TkMerchantComplaints int    `json:"tkMerchantComplaints" binding:""` // 微信支付投诉id
}

// GetTkOrderAfterSaleByIDRespond respond detail
type GetTkOrderAfterSaleByIDRespond struct {
	ID string `json:"id"` // convert to string id

	AppID                string `json:"appId"`           // appid
	OrderSn              string `json:"orderSn"`         // 订单号
	RefundSn             string `json:"refundSn"`        // 退款单号
	OrderID              int64  `json:"orderId"`         // 订单id
	ProductID            int    `json:"productId"`       // 商品id
	ProductCode          string `json:"productCode"`     // 商品code
	ShopID               int    `json:"shopId"`          // 店铺ID
	CompanyID            int    `json:"companyId"`       // 公司ID
	AdminID              uint   `json:"adminId"`         // 管理员ID
	UserID               int    `json:"userId"`          // 用户id
	Appid                string `json:"appid"`           // 小程序ID
	AfterSaleStatus      int    `json:"afterSaleStatus"` // 售后状态（待处理1.待卖家退货2.待商家收货3.换货待商家发货4.待买家收获5.退款完成6.售后关闭7.退款中8.极速退款成功9.售后完成10.待买家处理11.退款失败12）
	AfterSaleType        int    `json:"afterSaleType"`   // 业务类型（1仅退款, 2.退货退款,3:换货，4：极速退款）
	Reason               string `json:"reason"`
	Number               int    `json:"number"`               // 退货数量
	Price                uint   `json:"price"`                // 退款金额
	RefundMoney          int    `json:"refundMoney"`          // 实际申请金额
	MsgID                int    `json:"msgId"`                // 原因选择
	Images               string `json:"images"`               // 凭证图片（
	RefuseReason         string `json:"refuseReason"`         // 拒绝原因
	RefuseFail           string `json:"refuseFail"`           // 微信退款失败原因
	ApplyAt              int    `json:"applyAt"`              // 申请时间
	ConfirmAt            int    `json:"confirmAt"`            // 确认时间
	AuditAccountID       int    `json:"auditAccountId"`       // 最后审核人ID
	AuditAt              uint   `json:"auditAt"`              // 审核时间
	CancelAt             int    `json:"cancelAt"`             // 取消时间
	UpdatedAt            int    `json:"updatedAt"`            // 更新时间
	SuccessAt            int    `json:"successAt"`            // 退款成功时间
	RefuseAt             int    `json:"refuseAt"`             // 拒绝时间
	AfterSale            int    `json:"afterSale"`            // 是否极速退款1.开启极速退款2.关闭极速退款'
	EditAdminID          int    `json:"editAdminId"`          // 同意拒绝的负责人
	LogisticsCompany     string `json:"logisticsCompany"`     // 物流公司
	LogisticsNumber      string `json:"logisticsNumber"`      // 物流单后
	RefundUserName       string `json:"refundUserName"`       // 申请人姓名
	RefundUserPhone      string `json:"refundUserPhone"`      // 申请人手机号
	UserSendTime         int    `json:"userSendTime"`         // 用户发货时间
	IsUpdateAddress      int    `json:"isUpdateAddress"`      // 是否修改物流，1：已修改。0：未修改
	TkMerchantComplaints int    `json:"tkMerchantComplaints"` // 微信支付投诉id
}

// DeleteTkOrderAfterSalesByIDsRequest request form ids
type DeleteTkOrderAfterSalesByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkOrderAfterSalesByIDsRequest request form ids
type GetTkOrderAfterSalesByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkOrderAfterSalesRequest request form params
type GetTkOrderAfterSalesRequest struct {
	query.Params // query parameters
}

// ListTkOrderAfterSalesRespond list data
type ListTkOrderAfterSalesRespond []struct {
	GetTkOrderAfterSaleByIDRespond
}
